Communication networks have migrated from using specialized networking equipment executing on dedicated hardware, like routers, firewalls, and gateways, to virtualized network components, such as VNFs and virtual machines (VM) that may be implemented or run on general purpose hardware within a cloud infrastructure. Network management of network components—whether or not virtualized—may require implementing, from time to time, software changes across the network or across a subset of the network components. These software changes may include software patches, software updates, configuration changes, or installation/uninstallation of software.
Implementing software changes presents a number of difficulties. For example, the specific manner in which a software change is implemented on a network component may depend upon specific characteristics of that network component, such as its vendor or version. As another example, it may be desirable to avoid scheduling constraints, which may prevent certain software changes from being implemented at the same time. Further, it may be desirable to minimize or eliminate the impact of rolling out the software change on the network traffic. As another example, it may be advantageous to incrementally rollout a software change across the network to determine the impact that software change may have on network performance.
This disclosure is directed to solving one or more of the problems in the existing technology.